

import requests
#随机调用标准值函数,用在一次循环函数中
def ans():
    url='https://python666.cn/cls/number/guess/'
    r=requests.get(url)
    return r.text
#一次循环函数，返回time_all_num,代表一次游戏总共玩了多少轮
def one_game():
    time_all_num=0
    i=int(ans())
    while True:
        num=int(input('请输入一个整数：'))
        time_all_num+=1  #用来记录每次游戏玩的轮数
        if num>i:
            print('猜大了，再试试')
        elif num<i:
            print('猜小了，再试试')
        else:
            print('你猜对了')
            return time_all_num
#定义猜数字游戏的外部循环部分，返回需要更新的总游戏数、总轮数、平均轮数、最快轮数
def all_games(name,time_num,total_times,fast_times):
    if time_num>0:
        ave_times=total_times/time_num
    else:
        ave_times=0
        print('游戏结束！%s，你一共玩了%d次游戏，共计%d轮，平均%.1f轮猜出答案，你最快用了%d轮猜中答案。'%(name,time_num,total_times,ave_times,fast_times))
    while True:
        times=one_game()
        if time_num==0 or times<fast_times:
            fast_times=times
        time_num+=1         #总共玩的游戏次数
        total_times+=times  #总共玩的轮数更新
        ave_times=total_times/time_num  #平均用多少轮猜出答案
        judge=input('是否继续游戏？输入y继续，其他退出:')
        if judge !='y':
            print('游戏结束！%s此次游戏，你一共玩了%d次游戏，共计%d轮，平均%.1f轮猜出答案，你最快用了%d轮猜中答案。'%(name,time_num,total_times,ave_times,fast_times))
            return time_num,total_times,ave_times,fast_times#程序主程序
def main():
    name=input('请输入你的名字：')#调取文本信息，得到一个字典内容，便于后面信息处理
    dic_player={}
    with open('game_one_user.txt') as player_data:
        lst_player_data=player_data.readlines()
    for i in lst_player_data:
        data=i.strip().split()
        dic_player[data[0]]=data[1:]   #得到的是目前文本中全部信息量，用字典体现了出来！元素是字符串
    if dic_player.get(name)==None:  #这里需要判断是否是新用户，数据归0，添加进字典中
        dic_player[name]=[0,0,0,0]
    new=all_games(name,int(dic_player[name][0]),int(dic_player[name][1]),int(dic_player[name][3]))
    dic_player[name]=[str(new[0]),str(new[1]),str(new[2]),str(new[3])]
#将字典里的元素，构成一个字符串进行输出、写入,使用for遍历和join函数
    result=''
    for i in dic_player:
        lst_player_name=dic_player[i]
        str_result=i+' '+' '.join(lst_player_name)+'\n'  #使用join函数前需要将元素字符串化
        result+=str_result
#将带有所有玩家的数据全部写入到文件中
    with open('game_one_user.txt','w') as f:
        f.write(result)

#调用主程序
main()